package com.znufe.exam.service.excel;

import com.alibaba.excel.util.StringUtils;
import com.znufe.exam.utility.easyexcel.ExcelCheckErrDto;
import com.znufe.exam.utility.easyexcel.ExcelCheckResult;
import com.znufe.exam.viewmodel.admin.question.excelmodel.TrueFalseFromExcelVM;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class TrueFalseServiceImpl implements TrueFalseService {

    @Autowired
    public TrueFalseServiceImpl() {}

    @Override
    public ExcelCheckResult checkImportExcel(List<TrueFalseFromExcelVM> trueFalseList, Integer questionType) {
        //成功结果集
        List<TrueFalseFromExcelVM> successList = new ArrayList<>();
        //错误数组
        List<ExcelCheckErrDto<TrueFalseFromExcelVM>> errList = new ArrayList<>();

        for (TrueFalseFromExcelVM trueFalse : trueFalseList) {
            // 错误信息
            StringBuilder errMsg = new StringBuilder();
            if (null == trueFalse.getTitle()) {
                errMsg.append("判断题题干不能为空！请修改").append(";");
            }
            if (null == trueFalse.getCorrectVM()) {
                errMsg.append("答案不能为空，请为判断题设置答案！").append(";");
            } else {
                if (!"对".equals(trueFalse.getCorrectVM()) && !"错".equals(trueFalse.getCorrectVM())) {
                    errMsg.append("判断题答案只能设置为“对”或“错”！请重试").append(";");
                }
            }
            if (null == trueFalse.getScore()) {
                errMsg.append("分数不能为空！请为题目设置分数！").append(";");
            }

            // 依据上面合法性判断的结果，
            // 正确的对象信息添加进successList，错误的对象信息添加进errList
            if (StringUtils.isEmpty(errMsg.toString())) {
                // 这里有两个选择，1、一个返回成功的对象信息，2、进行持久化操作
                System.out.println("SingleChoiceServiceImpl的 checkImportExcel里的 ：" + trueFalse);
                successList.add(trueFalse);
            } else {
                // 添加错误信息
                errList.add(new ExcelCheckErrDto(trueFalse, errMsg.toString()));
            }
        }
        return new ExcelCheckResult(successList, errList);


    }
}
